from tkinter import *
from tkinter import messagebox

#定义类继承于画纸对象
class Application(Frame):
    '''经典的GUI程序类的写法'''
    def __init__(self,master=None):# master模板容器，画纸放到哪
        # 继承方法，父类的重新定义
        super().__init__(master) # 定义属性
        self.master = master
        self.pack() # 画纸几何布局，默认摆放
        self.CreatWidget() # 创建示例对象时，自动进行调用

    def CreatWidget(self):
        '''创建组件'''
        # 改变StringVar，button按钮上的文字也随之改变
        self.v = StringVar()
        # 设定默认值为F
        self.v.set('F')
        # 创建单选按钮的组件，显示在画板上，选项的内容是可变的
        self.r1 = Radiobutton(self,text='男性',value='M',variable=self.v)
        self.r2 = Radiobutton(self,text='女性',value='F',variable=self.v)
        # 布局摆放
        self.r1.pack()
        self.r2.pack()
        # 触发按钮，提交信息
        Button(self,text='确定',command=self.confirm).pack()
    def confirm(self):
        messagebox.showinfo('测试','选择的性别:' + self.v.get())

if __name__ == '__main__': # 程序入口，里面的本文件内调用，其他程序访问不到
    root = Tk() # 创建主窗口
    root.title('标题-经典GUI程序类的测试')
    root.geometry('300x300+900+300')

    # 创建画纸对象放到root画板上
    Application(master=root)
    root.mainloop()  # 消息循环
